// 引入认证工具
const auth = require('../../../utils/auth')
// 引入用户API
const userApi = require('../../../api/user')

Page({
  data: {
    // 表单数据
    form: {
      username: '',
      password: ''
    },
    // 全局加载状态
    globalLoading: false,
    globalLoadingText: '身份验证中...',
    // 用户角色
    role: 'citizen',
    // 密码显示状态
    showPassword: false,
    // 加载状态
    loading: false,
    // 是否可以登录（表单验证）
    canLogin: false
  },

  // 显示全局加载
  showGlobalLoading(text = '身份验证中...') {
    const app = getApp()
    app.showGlobalLoading({
      loadingText: text
    })
  },

  // 隐藏全局加载
  hideGlobalLoading() {
    const app = getApp()
    app.hideGlobalLoading()
  },

  // 更新全局加载状态
  updateGlobalLoading(data) {
    this.setData({
      globalLoading: data.globalLoading,
      globalLoadingText: data.globalLoadingText || this.data.globalLoadingText
    })
  },

  /**
   * 页面加载
   */
  onLoad(options) {
    // 显示页面加载效果
    this.showGlobalLoading('身份验证中...')
    console.log('登录页面加载')
    // 检查是否已登录
    this.checkLoginStatus()
  },

  /**
   * 检查登录状态
   */
  checkLoginStatus() {
    if (auth.isLoggedIn()) {
      const userRole = auth.getCurrentRole()
      console.log('用户已登录，角色:', userRole)
      
      // 隐藏全局加载状态
      this.hideGlobalLoading()
      
      // 所有用户都跳转到主页
      wx.switchTab({
        url: '/pages/common/index/index'
      })
    } else {
      // 用户未登录，隐藏全局加载状态
      this.hideGlobalLoading()
    }
  },

  /**
   * 角色切换
   */
  onRoleChange(e) {
    const role = e.currentTarget.dataset.role
    this.setData({
      role: role
    })
    this.validateForm()
  },

  /**
   * 用户名输入
   */
  onUsernameInput(e) {
    this.setData({
      'form.username': e.detail.value
    })
    this.validateForm()
  },

  /**
   * 密码输入
   */
  onPasswordInput(e) {
    this.setData({
      'form.password': e.detail.value
    })
    this.validateForm()
  },

  /**
   * 切换密码显示状态
   */
  onTogglePassword() {
    this.setData({
      showPassword: !this.data.showPassword
    })
  },

  /**
   * 表单验证
   */
  validateForm() {
    const { username, password } = this.data.form
    const canLogin = username.trim().length > 0 && password.length > 0
    
    this.setData({
      canLogin: canLogin
    })
  },

  /**
   * 验证密码格式
   */
  validatePassword(password) {
    if (!password) {
      return '请输入密码'
    }
    return null
  },

  /**
   * 用户登录
   */
  async onLogin() {
    // 防止重复提交
    if (this.data.loading) {
      return
    }

    // 基本验证
    if (!this.data.canLogin) {
      wx.showToast({
        title: '请填写完整信息',
        icon: 'none',
        duration: 2000
      })
      return
    }

    // 验证密码格式
    const passwordError = this.validatePassword(this.data.form.password)
    if (passwordError) {
      wx.showToast({
        title: passwordError,
        icon: 'none',
        duration: 3000
      })
      return
    }

    this.setData({ loading: true })

    try {
      const { username, password } = this.data.form
      const { role } = this.data

      console.log('开始登录:', { username, role })

      // 调用登录API
      const loginData = {
        loginIdentifier: username.trim(),
        password: password,
        role: role
      }

      const response = await userApi.login(loginData)
      
      if (response.success) {
        // 登录成功，保存token到本地存储
        if (response.data.token) {
          try {
            wx.setStorageSync('userToken', response.data.token)
            console.log('Token已保存到本地存储')
          } catch (error) {
            console.error('保存token失败:', error)
          }
        }

        // 登录成功，保存用户信息，包含完整的个人信息
        const userInfo = {
          userId: response.data.id,
          username: response.data.username,
          accountNumber: response.data.accountNumber,
          role: response.data.role,
          name: response.data.name || '',
          email: response.data.email || '',
          phone: response.data.phone || '',
          avatar: response.data.avatar || '',
          // 添加完整的个人信息字段
          idCard: response.data.idCard || '',
          gender: response.data.gender || '',
          birthDate: response.data.birthDate || '',
          province: response.data.province || '',
          city: response.data.city || '',
          county: response.data.county || '',
          village: response.data.village || '',
          address: response.data.address || '',
          postalCode: response.data.postalCode || '',
          createdAt: response.data.createdAt,
          lastLoginTime: response.data.lastLoginTime
        }

        auth.setCurrentUser(userInfo)

        // 显示成功提示
        wx.showToast({
          title: '登录成功',
          icon: 'success',
          duration: 1500
        })

        // 延迟跳转
        setTimeout(() => {
          // 所有用户都跳转到主页
          wx.switchTab({
            url: '/pages/common/index/index'
          })
        }, 1500)
      } else {
        // 登录失败，显示错误信息
        wx.showToast({
          title: response.message || '登录失败',
          icon: 'none',
          duration: 2000
        })
      }

    } catch (error) {
      console.error('登录失败:', error)
      wx.showToast({
        title: error.message || '登录失败，请重试',
        icon: 'none',
        duration: 2000
      })
    } finally {
      this.setData({ loading: false })
    }
  },

  /**
   * 跳转到注册页面
   */
  onRegister() {
    wx.navigateTo({
      url: '/pages/auth/register/index'
    })
  },

  /**
   * 跳转到忘记密码页面
   */
  onForgotPassword() {
    wx.navigateTo({
      url: '/pages/auth/forgot-password/index'
    })
  }
})
